package com.ato.java;

/**
 * @author wangjing
 * @create 2021--08--09--20:25
 */

/**
 * 代理模式 ：为其它对象一种代理，用来控制对这个对象的访问
 */
public class ProxyPattern {
    public static void main(String[] args) {
//        创建代理类
        Server server = new Server();
//        创建被代理类，将代理类作为形参，在被代理类自身中去调用代理类的方法，那么 使用时，也可以做代理类的事
        Proxy proxy = new Proxy(server);
        proxy.browe();

    }
}
interface NetWork{
    public void browe();
}

//被代理类
class Server implements NetWork{

    @Override
    public void browe() {
        System.out.println("被代理类的方法被调用了");
    }
}
//代理类
class Proxy implements  NetWork{
    private NetWork netWork;
    public  Proxy(NetWork netWork){
        this.netWork = netWork;
    }
    public void  check (){
        System.out.println("代理类的Proxy的check方法，在代理类中也可以调用被代理类的方法");
    }
    @Override
    public void browe() {
        check();
        netWork.browe();
    }
}